Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / backend / lxst_profiles_compat.py

Displaying Raw • Download


meshchatx/src/backend/lxst_profiles_compat.py 026b8c5bc7855095c2eb4e1cc43329493f8bad57 (026b8c5b) Text, 2.72 KB

T8b949e# SPDX-License-Identifier: 0BSD

T8b949e"""LXST Profiles helpers that work across LXST versions.

Android previously vendored lxst 0.4.8 without call-mode helpers
(available_modes, MODE_FULL_DUPLEX, MODE_HALF_DUPLEX). Desktop and current
Android builds ship 0.5.0+. MeshChatX keeps this shim so identity setup never
crashes when an older Profiles class is present.
"""

Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations

T8b949e# Match LXST 0.5+ Profiles constants when the installed package lacks them.
Te6edf3MODE_FULL_DUPLEX Tff7b72= T79c0ff0x01
Te6edf3MODE_HALF_DUPLEX Tff7b72= T79c0ff0x02
Te6edf3DEFAULT_MODE Tff7b72= Te6edf3MODE_FULL_DUPLEX

Te6edf3_MODE_NAMES Tff7b72= Tb4b4b4{
Te6edf3MODE_FULL_DUPLEXTb4b4b4: Ta5d6ff"Ta5d6ffFull DuplexTa5d6ff"Tb4b4b4,
Te6edf3MODE_HALF_DUPLEXTb4b4b4: Ta5d6ff"Ta5d6ffHalf DuplexTa5d6ff"Tb4b4b4,
Tb4b4b4}
Te6edf3_MODE_ABBREVS Tff7b72= Tb4b4b4{
Te6edf3MODE_FULL_DUPLEXTb4b4b4: Ta5d6ff"Ta5d6ffFDXTa5d6ff"Tb4b4b4,
Te6edf3MODE_HALF_DUPLEXTb4b4b4: Ta5d6ff"Ta5d6ffHDXTa5d6ff"Tb4b4b4,
Tb4b4b4}


Tff7b72def Td2a8ffimport_profilesTb4b4b4(Tb4b4b4)Tb4b4b4:
T8b949e"""Import LXST Profiles, or raise ImportError if LXST is unavailable."""
Tff7b72from T7ee787LXSTT7ee787.T7ee787PrimitivesT7ee787.T7ee787Telephony Tff7b72import Te6edf3Profiles

Tff7b72return Te6edf3Profiles


Tff7b72def Td2a8ffduplex_modes_supportedTb4b4b4(Te6edf3profilesTff7b72=Tff7b72NoneTb4b4b4) Tff7b72-Tff7b72> Tffa657boolTb4b4b4:
T8b949e"""True when the installed LXST Profiles exposes call-mode helpers."""
Te6edf3Profiles Tff7b72= Te6edf3profiles Tff7b72if Te6edf3profiles Tff7b72is Tff7b72not Tff7b72None Tff7b72else Te6edf3import_profilesTb4b4b4(Tb4b4b4)
Tff7b72return Tffa657callableTb4b4b4(Tffa657getattrTb4b4b4(Te6edf3ProfilesTb4b4b4, Ta5d6ff"Ta5d6ffavailable_modesTa5d6ff"Tb4b4b4, Tff7b72NoneTb4b4b4)Tb4b4b4)


Tff7b72def Td2a8ffmode_full_duplexTb4b4b4(Te6edf3profilesTff7b72=Tff7b72NoneTb4b4b4) Tff7b72-Tff7b72> Tffa657intTb4b4b4:
Te6edf3Profiles Tff7b72= Te6edf3profiles Tff7b72if Te6edf3profiles Tff7b72is Tff7b72not Tff7b72None Tff7b72else Te6edf3import_profilesTb4b4b4(Tb4b4b4)
Tff7b72return Tffa657intTb4b4b4(Tffa657getattrTb4b4b4(Te6edf3ProfilesTb4b4b4, Ta5d6ff"Ta5d6ffMODE_FULL_DUPLEXTa5d6ff"Tb4b4b4, Te6edf3MODE_FULL_DUPLEXTb4b4b4)Tb4b4b4)


Tff7b72def Td2a8ffmode_half_duplexTb4b4b4(Te6edf3profilesTff7b72=Tff7b72NoneTb4b4b4) Tff7b72-Tff7b72> Tffa657intTb4b4b4:
Te6edf3Profiles Tff7b72= Te6edf3profiles Tff7b72if Te6edf3profiles Tff7b72is Tff7b72not Tff7b72None Tff7b72else Te6edf3import_profilesTb4b4b4(Tb4b4b4)
Tff7b72return Tffa657intTb4b4b4(Tffa657getattrTb4b4b4(Te6edf3ProfilesTb4b4b4, Ta5d6ff"Ta5d6ffMODE_HALF_DUPLEXTa5d6ff"Tb4b4b4, Te6edf3MODE_HALF_DUPLEXTb4b4b4)Tb4b4b4)


Tff7b72def Td2a8ffdefault_modeTb4b4b4(Te6edf3profilesTff7b72=Tff7b72NoneTb4b4b4) Tff7b72-Tff7b72> Tffa657intTb4b4b4:
Te6edf3Profiles Tff7b72= Te6edf3profiles Tff7b72if Te6edf3profiles Tff7b72is Tff7b72not Tff7b72None Tff7b72else Te6edf3import_profilesTb4b4b4(Tb4b4b4)
Tff7b72return Tffa657intTb4b4b4(Tffa657getattrTb4b4b4(Te6edf3ProfilesTb4b4b4, Ta5d6ff"Ta5d6ffDEFAULT_MODETa5d6ff"Tb4b4b4, Te6edf3DEFAULT_MODETb4b4b4)Tb4b4b4)


Tff7b72def Td2a8ffavailable_modesTb4b4b4(Te6edf3profilesTff7b72=Tff7b72NoneTb4b4b4) Tff7b72-Tff7b72> Tffa657listTb4b4b4[Tffa657intTb4b4b4]Tb4b4b4:
T8b949e"""Return duplex mode ids supported by the installed LXST build."""
Te6edf3Profiles Tff7b72= Te6edf3profiles Tff7b72if Te6edf3profiles Tff7b72is Tff7b72not Tff7b72None Tff7b72else Te6edf3import_profilesTb4b4b4(Tb4b4b4)
Te6edf3native Tff7b72= Tffa657getattrTb4b4b4(Te6edf3ProfilesTb4b4b4, Ta5d6ff"Ta5d6ffavailable_modesTa5d6ff"Tb4b4b4, Tff7b72NoneTb4b4b4)
Tff7b72if Tffa657callableTb4b4b4(Te6edf3nativeTb4b4b4)Tb4b4b4:
Tff7b72return Tffa657listTb4b4b4(Te6edf3nativeTb4b4b4(Tb4b4b4)Tb4b4b4)
T8b949e# Pre-duplex LXST: full duplex only. Half duplex needs switch_mode / squelch.
Tff7b72return Tb4b4b4[Te6edf3mode_full_duplexTb4b4b4(Te6edf3ProfilesTb4b4b4)Tb4b4b4]


Tff7b72def Td2a8ffmode_nameTb4b4b4(Te6edf3mode_idTb4b4b4, Te6edf3profilesTff7b72=Tff7b72NoneTb4b4b4) Tff7b72-Tff7b72> Tffa657strTb4b4b4:
Te6edf3Profiles Tff7b72= Te6edf3profiles Tff7b72if Te6edf3profiles Tff7b72is Tff7b72not Tff7b72None Tff7b72else Te6edf3import_profilesTb4b4b4(Tb4b4b4)
Te6edf3native Tff7b72= Tffa657getattrTb4b4b4(Te6edf3ProfilesTb4b4b4, Ta5d6ff"Ta5d6ffmode_nameTa5d6ff"Tb4b4b4, Tff7b72NoneTb4b4b4)
Tff7b72if Tffa657callableTb4b4b4(Te6edf3nativeTb4b4b4)Tb4b4b4:
Tff7b72return Tffa657strTb4b4b4(Te6edf3nativeTb4b4b4(Te6edf3mode_idTb4b4b4)Tb4b4b4)
Tff7b72return Te6edf3_MODE_NAMESTff7b72.Td2a8ffgetTb4b4b4(Tffa657intTb4b4b4(Te6edf3mode_idTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffDefaultTa5d6ff"Tb4b4b4)


Tff7b72def Td2a8ffmode_abbreviationTb4b4b4(Te6edf3mode_idTb4b4b4, Te6edf3profilesTff7b72=Tff7b72NoneTb4b4b4) Tff7b72-Tff7b72> Tffa657strTb4b4b4:
Te6edf3Profiles Tff7b72= Te6edf3profiles Tff7b72if Te6edf3profiles Tff7b72is Tff7b72not Tff7b72None Tff7b72else Te6edf3import_profilesTb4b4b4(Tb4b4b4)
Te6edf3native Tff7b72= Tffa657getattrTb4b4b4(Te6edf3ProfilesTb4b4b4, Ta5d6ff"Ta5d6ffmode_abbrevationTa5d6ff"Tb4b4b4, Tff7b72NoneTb4b4b4)
Tff7b72if Tffa657callableTb4b4b4(Te6edf3nativeTb4b4b4)Tb4b4b4:
Tff7b72return Tffa657strTb4b4b4(Te6edf3nativeTb4b4b4(Te6edf3mode_idTb4b4b4)Tb4b4b4)
Tff7b72return Te6edf3_MODE_ABBREVSTff7b72.Td2a8ffgetTb4b4b4(Tffa657intTb4b4b4(Te6edf3mode_idTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffDFLTTa5d6ff"Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────